// 在Rust中实现⾃定义数据类型
// 步骤
// 1. 创建⾃定义数据类型
// 2. 实现可迭代特性
// 3. 实现可⽐较特性
// 4. 实现可克隆特性

#[cfg(test)]
mod test {

    #[derive(Clone, Debug, PartialEq)]
    struct MyDataType {
        data: Vec<i32>,
    }

    impl IntoIterator for MyDataType {
        type Item = i32;
        type IntoIter = std::vec::IntoIter<Self::Item>;
        fn into_iter(self) -> Self::IntoIter {
            self.data.into_iter()
        }
    }

    #[test]
    fn main() {
        let data1 = MyDataType {
            data: vec![1, 2, 3],
        };
        let _data2 = data1.clone();

        // 使用不可变引用迭代
        for v in data1 {
            print!("{}", v);
        }

        // data 1所有权移动这个报错
        // println!("{:?}", data1.data == data2.data);
    }
}
